# 指定使用的 cmake 的最低版本，可选，非必须，如果不加可能会有警告
cmake_minimum_required(VERSION 2.8)

# g++ *.cpp -std=c++11 -o app
# 相当于在g++命令加上 -std=c++11 选项
set(CMAKE_CXX_STANDARD 11)

# 在CMake中指定可执行程序输出的路径，也对应一个宏，叫做EXECUTABLE_OUTPUT_PATH，它的值还是通过set命令进行设置，这个路径不需要自己创建，cmake会自动创建
# set(HOME /home/cpp-linux/test01/04cmake01)
set(EXECUTABLE_OUTPUT_PATH $ENV{EXECUTABLE_OUTPUT_PATH})  # $ENV{EXECUTABLE_OUTPUT_PATH} 引用环境变量

message("PROJECT_SOURCE_DIR=${PROJECT_SOURCE_DIR}")
message("CMAKE_CURRENT_SOURCE_DIR=${CMAKE_CURRENT_SOURCE_DIR}")


# 搜索文件，设置源代码文件路径，其实也是设置一个变量，其值就是一个字符串，包含要编译的源文件
# 方式一（不推荐）：aux_source_directory(.. ..)  
# 如果一个项目里边的源文件很多，在编写CMakeLists.txt文件的时候不可能将项目目录的各个文件一一罗列出来，这样太麻烦也不现实。
# 所以，在CMake中为我们提供了搜索文件的命令，可以使用aux_source_directory命令或者file命令。
# aux_source_directory(< dir > < variable >)
# aux_source_directory(src SRC_LIST)

# 方式二（推荐）：file(.. .. ..)
# 在CMake中为我们提供了搜索文件的命令，他就是file（当然，除了搜索以外通过 file 还可以做其他事情）。
# file(GLOB/GLOB_RECURSE 变量名 要搜索的文件路径和文件类型)
# GLOB: 将指定目录下搜索到的满足条件的所有文件名生成一个列表，并将其存储到变量中。
# GLOB_RECURSE：递归搜索指定目录，将搜索到的满足条件的文件名生成一个列表，并将其存储到变量中。
# CMAKE_CURRENT_SOURCE_DIR 宏表示当前访问的 CMakeLists.txt 文件所在的路径
# 关于要搜索的文件路径和类型可加双引号，也可不加: file(GLOB MAIN_SRC "${CMAKE_CURRENT_SRC_DIR}/src/*.cpp")
file(GLOB MAIN_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/*.cpp)
file(GLOB MAIN_HEAD ${CMAKE_CURRENT_SOURCE_DIR}/include/*.h)

# 设置头文件搜索
include_directories(${MAIN_HEAD})


# 定义工程名称，并可指定工程的版本、工程描述、web主页地址、支持的语言（默认情况支持所有语言），如果不需要这些都是可以忽略的，只需要指定出工程名字即可。
project(calc)

# 定义工程会生成一个可执行程序
# add_executable(app main.cpp ${SRC_LIST})
add_executable(app main.cpp ${MAIN_SRC})



